home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / news / nntp / nntplink3.1.0 / xmitauth.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-10-25  |  2.2 KB  |  106 lines

  1. #include "conf.h"
  2. #include <fcntl.h>
  3. #ifdef FAKESYSLOG
  4. #include "fsyslog.h"
  5. #else
  6. #include <syslog.h>
  7. #endif
  8. #ifdef HAVE_STRING_H
  9. #include <string.h>
  10. #else
  11. #include <strings.h>
  12. #endif
  13. #include "readline.h"
  14. #include "nntplink.h"
  15. #include "nntp.h"
  16. #include "strfuns.h"
  17.  
  18. #ifdef AUTH
  19.  
  20. extern char *converse();
  21. extern void fail();
  22. extern void log();
  23.  
  24. void
  25.   xmitauth(host)
  26. char *host;
  27. {
  28.     static char *fname = "xmitauth: ";
  29.     char *remote, *user, *pass;
  30.     char *line, *reply;
  31.     int resp;
  32.     int sys_fd;
  33.     FileBuf *sys_fbp;
  34.  
  35.  
  36.     if ((sys_fd = open(PASSFILE, O_RDONLY)) == FAIL)
  37.       fail(fname, "%s%s: %s not found", Host.name, PASSFILE);
  38.  
  39.     sys_fbp = fb_fdopen(sys_fd);
  40.  
  41.     while((line = fb_readline(sys_fbp, NULL)) != NULL)
  42.       if (*line != '#') {
  43.  
  44.       remote = line;
  45.  
  46.       if ((line = strchr(remote, ' ')) == NULL)
  47.         log(LOG_NOTICE, fname, "%s%s: malformed entry in nntp.sys\n",
  48.         Host.name);
  49.       else {
  50.           *line++ = '\0';
  51.           user = line;
  52.           if ((line = strchr(user, ' ')) == NULL)
  53.         log(LOG_NOTICE, fname, "%s%s: malformed entry in nntp.sys\n",
  54.             Host.name);
  55.           else {
  56.           *line++ = '\0';
  57.           pass = line;
  58.           if (strcasecmp(remote, host) == MATCH)
  59.             break;
  60.           }
  61.       }
  62.       }
  63.  
  64.     if (fb_error(sys_fbp))
  65.       log(LOG_WARNING, fname, "%s%s: error reading %s: %s\n",
  66.       Host.name, PASSFILE, errmsg(errno));
  67.  
  68.     if (line == NULL)
  69.       fail(fname, "%s%s: host %s authinfo not in nntp.sys\n", Host.name,
  70.        host);
  71.  
  72.     line = str2save("authinfo user ", user);
  73.     reply = converse(line, &resp);
  74.     FREE(line);
  75.  
  76.     if (resp != NEED_AUTHDATA)
  77.       if (resp == FAIL)
  78.     fail(fname,
  79.          "%s%s: sent authinfo user, exiting due to bad response\n",
  80.          Host.name);
  81.       else
  82.     fail(fname,
  83.          "%s%s: sent authinfo user, exiting due to bad response: %s\n",
  84.          Host.name, reply);
  85.  
  86.     line = str2save("authinfo pass ", pass);
  87.     reply = converse(line, &resp);
  88.     FREE(line);
  89.  
  90.     if (resp != OK_AUTH)
  91.       if (resp == FAIL)
  92.     fail(fname,
  93.          "%s%s: sent authinfo pass, exiting due to bad response\n",
  94.          Host.name);
  95.       else
  96.     fail(fname,
  97.          "%s%s: sent authinfo pass, exiting due to bad response: %s\n",
  98.          Host.name, reply);
  99.  
  100.     CLOSE(sys_fd);
  101.     fb_close(sys_fbp);
  102.     return;
  103. }
  104. #endif /* AUTH */
  105.  
  106.